package com.dys.testmap01;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @className: com.dys.testmap01.MapTest
 * @description: com.dys.testmap01
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/08 下午9:49
 */
public class MapTest {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        new MapTest().ergodic();
    }

    /**
     * 特点：唯一，无序
     */
    public void testMap() {
         /*
            增加：put(K key, V value)
            删除：clear() remove(Object key)
            修改：
            查看：entrySet() get(Object key) keySet() size() values()
            判断：containsKey(Object key) containsValue(Object value)
                equals(Object o) isEmpty()
         */
        Map<String, Integer> map = new HashMap<>();
        map.put("a", 123456);
        map.put("b", 24446);
        map.put("c", 346544);
        map.put("d", 455445);
        map.put("e", 554545);
        map.put("a", 65445);
        System.out.println(map.size());
        System.out.println(map);
        // 1.删除
        // map.clear();
        // System.out.println(map.size());
        // System.out.println(map);
        // 1.remove
        // Integer a = map.remove("a");
        // System.out.println(a);
        // System.out.println(map.size());
        // System.out.println(map);

        // 2.查看
        System.out.println(map.get("a"));

        // 3.判断
        System.out.println(map.containsKey("a"));
        System.out.println(map.containsValue(24446));
        System.out.println("========判空=========");
        System.out.println(map.isEmpty());

        Map<String, Integer> map2 = new HashMap<>();
        System.out.println("======是否重复===========");
        // System.out.println(map2.put("a", 123456));
        map2.put("a", 123456);
        map2.put("b", 24446);
        map2.put("c", 346544);
        map2.put("d", 455445);
        map2.put("e", 554545);
        System.out.println(map2.put("a", 65445));

        System.out.println(map == map2);
        System.out.println(map.equals(map2));
    }

    /**
     * map集合遍历：entrySet()、keySet()、values()
     */
    public void ergodic() {
        Map<String, Integer> map = new HashMap<>();
        map.put("a", 123456);
        map.put("b", 24446);
        map.put("c", 346544);
        map.put("d", 455445);
        map.put("e", 554545);
        map.put("a", 65445);
        Set<String> strings = map.keySet();
        for (String string : strings) {
            System.out.println(string);
        }
        System.out.println("==========得到所有的value======");
        Collection<Integer> values = map.values();
        for (Integer integer : values) {
            System.out.println(integer);
        }
        // 方式2
        System.out.println("======根据得到的key得到value");
        Set<String> set = map.keySet();
        for (String string : set) {
            System.out.println(map.get(string));
        }
        System.out.println("==========得到所有的key和value======");
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry<String, Integer> e : entries) {
            System.out.println(e.getKey() + "==" + e.getValue());
        }
    }
}
